/** Project 3
 *
 * @Group Members
 * 	Brentton Garber - mrbrentgarber@gmail.com
 * 	Georgii Tkachuk - georgii.t@gmail.com
 * 	Lucas Bridge - ltbridge@asu.edu
 * 	Austin Burnham - burnhamaustin@gmail.com
 * 	Kevin Greenberg - kgreenbe@asu.edu
 * @Revision
 *
 * @Since
 *
 */

#ifndef CSE220_project3_Tokenizer_h
#define CSE220_project3_Tokenizer_h

#include "common.h"
#include "Literal.h"
#include "Scanner.h"
using namespace std;

class Scanner;

class Tokenizer
{
public:    
    Tokenizer(Scanner &);
    void GetToken(CharCode []);
    TokenCode GetTokenCode();
    string GetTokenString();
    Literal* GetLiteral();
    ~Tokenizer();
    TokenCode code;
    string tokenString;
    Literal *lit;
    Scanner *scanner;

    
    void SkipBlanks();
    void GetWord(char, CharCode []);
    void GetNumber(char, CharCode []);
    void GetString(char);
    void GetSpecial(char);
    bool IsReservedWord(string &);
};

#endif
